package com.iflytek.read.util;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;

/**
 * @author wangshuai
 */
public class RotationUtil {

    /**
     * 存储当前动画对象，以便可以停止它
     */
    private static RotateAnimation currentAnimation;

    /**
     * 开始360度无限旋转动画
     * @param view 需要旋转的View
     */
    public static void startRotation(View view) {
        // 先停止之前的动画（如果有）
        stopRotation(view);

        // 创建旋转动画
        // 参数说明：起始角度，结束角度，X轴锚点类型，X轴锚点值，Y轴锚点类型，Y轴锚点值
        RotateAnimation rotateAnimation = new RotateAnimation(
                0, 360,
                Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF, 0.5f);

        // 设置动画持续时间（2秒完成一次旋转）
        rotateAnimation.setDuration(2000);
        // 设置动画重复次数（无限循环）
        rotateAnimation.setRepeatCount(Animation.INFINITE);
        // 设置动画插值器（线性插值器使旋转速度均匀）
        rotateAnimation.setInterpolator(view.getContext(), android.R.anim.linear_interpolator);

        // 保存当前动画引用
        currentAnimation = rotateAnimation;

        // 启动动画
        view.startAnimation(rotateAnimation);
    }

    /**
     * 停止旋转动画
     * @param view 需要停止旋转的View
     */
    public static void stopRotation(View view) {
        if (currentAnimation != null) {
            // 清除动画
            view.clearAnimation();
            currentAnimation.cancel();
            currentAnimation = null;
        }
    }
}